██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
CodeIgniter
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwbqCodeIgniter è un mwbgweb application framework con licenza mwbwOpen Software License (OSL) per lo sviluppo di mwcaapplicazioni web dinamiche in linguaggio mwcqPHP, basato sul paradigma MVC (mwcgModel-View-Controller).
Contents
• Note
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Descrizione
CodeIgniter è famoso per la sua velocità se confrontato con altri framework PHP.cite-ref-2[2]. In un intervento a proposito di framework per PHP in generale, mwgqRasmus Lerdorf, uno dei creatori del linguaggio mwggPHP, parlando al frOSCon nell'agosto 2008, ha dichiarato che è uno dei suoi mwhaframework preferiti "perché è veloce, leggero ed infine è proprio come dev'essere un framework".cite-ref-3[3]
Il codice sorgente di CodeIgniter è pubblicato in mwigGitHubcite-ref-4[4], dove è correntemente mwjwdisponibile la versione 4, certificata open source con mwkaOpen Software License("OSL") v. 3.0 come la precedente versione 3. Le versioni precedenti la 3.0 di CodeIgniter sono invece sotto licenza proprietaria Apache/BSD-style open source license.cite-ref-5[5]
Il 7 ottobre 2019 i membri e gli sviluppatori più attivi hanno fondato la CodeIgniter Foundation, società mwoanon profit che si occupa di governare e sviluppare il progettocite-ref-7[7].
Il 15 gennaio 2020 è deceduto Jim Parry, uno dei principali ideatori e sviluppatori del progetto, che continua nelle mani degli altri collaboratoricite-ref-8[8].
Caratteristiche
CodeIgniter 3 è compatto (occupa circa 2 mwraMegaByte di spazio su disco) e veloce nel funzionamentocite-ref-9[9]. La sua installazione richiede generalmente poco tempo e può essere svolta senza usare la riga di comando né obbligatoriamente strumenti come mwsqComposer o mwsgGit, sebbene siano fornite istruzioni per usarli.
Grazie alle sue caratteristiche può essere installato facilmente in quasi tutti i sistemi di hosting e con varie versioni di mwtaPHP. La versione 3 richiede come minimo mwtqPHP versione 5.3.7 (5.6 consigliata)cite-ref-10[10], mentre la nuova versione 4, attualmente in versione beta, richiederà come minimo la versione 7.2 (o successive)cite-ref-11[11].
• mwxgMySQL v.5.1+ con driver mysqli e pdo
• mwyaOracle con driver oci8 e pdo
• mwygPostgreSQL con driver postsgre e pdo
• mwzaMicrosoft SQL con driver mssql, sqlsrv (dalla versione 2005) e pdo
• mwzgSQLite con driver sqlite (versione 2), sqlite3 (versione 3), e pdo
• mwaaCUBRID con driver curbird e pdo
• Interbase/Firebird con driver ibase e pdo
• mwawODBC con driver odbc e pdo
Non dispone di un motore di templating integrato, sebbene la scrittura del codice dei file mwbqPHP di template possa essere semplificato dall'uso di librerie di funzioni integrate che generano direttamente codice mwbgHTML. Inoltre, grazie al vasto gruppo di utenti e librerie di terze parti può essere interfacciato con motori di templating per PHP esterni, come per esempio i popolari Smarty PHPcite-ref-13[13] e Twig.
CodeIgniter prevede il caching sia delle pagine web generate, sia del database e meccanismi di protezione contro le minacce più comuni, come per esempio la mwdgSQL injection, durante l'immissione di dati nei mwdwformcite-ref-14[14].
Tra i punti considerabili deboli del framework versione 3.0, l'assenza dei mwfqnamespace (che però consente di aumentare la velocità di esecuzione del codice e che sono previsti nella versione 4), una certa macchinosità nel test delle unit e un numero ridotto di librerie integratecite-ref-15[15]. Quest'ultimo punto determina però il vantaggio delle ridotte dimensioni di installazione del mwggframework, mentre i programmatori possono reperire librerie di terze parti con licenza mwgwopen source e integrarle con poco sforzo, oppure svilupparne di proprie con relativa facilità data la struttura estendibile di CodeIgniter.
Come funziona
CodeIgniter è un framework MVC e funziona come tale.
Quando un utente richiede una risorsa al server dove opera il framework, l'interpretazione viene svolta da un controller, costituito da righe di software, che risponde fornendo un risultato comprensibile dal browser dell'utente grazie al codice di una mwhwvista o view. Se necessario il controller provvede a recuperare dati per soddisfare la richiesta, per esempio da file XML o da un server database. L'associazione tra la richiesta da parte del browser e il codice del controller viene eseguita in CodeIgniter attraverso la mappatura degli indirizzi URL a specifiche sezioni di codice. Per esempio la richiesta:
www.sitocodedigniter.test/libro/capitolo/1
può essere di regola interpretata da CodeIgniter invocando un mwigcontroller che userà in una classe di nome "libro" la mwiwview chiamata "capitolo" e passando a questa il parametro numerico "1". Il risultato dell'elaborazione della view sarà in ogni caso una pagina comprensibile dal browser che ha eseguito la richiesta, per esempio, in questo caso, dopo avere recuperato da un database le informazioni relative al capitolo 1 ed averle formattate secondo lo standard HTML usando un mwjamodello di pagina preconfezionato.
Riassumendo le componenti del modello MVC di CodeIgniter:
• I mwkamodelli gestiscono i dati necessari all'applicazione, nel contempo consentono di applicare regole speciali al trattamento delle informazioni necessarie
• Le mwkgviste sono file di regola semplici, ovvero senza molto codice, che si occupano di presentare all'utente tramite il browser i risultati dell'elaborazione del software
• I mwlacontroller sono il codice di programmazione che si occupa di collegare i due elementi precedenti, gestendo il flusso di informazioni tra la vista e i dati gestiti dall'applicazione, per esempio input dell'utente e database.
Codeigniter 4
La struttura di un sito sviluppato con Codeigniter 4 è stata modificata e ora è prevista una cartella mwngpublic che rappresenta la root del sito web. Una scelta dettata principalmente da motivi di sicurezza, dato che in questo modo è possibile isolare e "nascondere" più facilmente agli utenti le cartelle mwnwsystem e mwoaapplication dove è contenuto il codice vero e proprio. Inoltre ora è prevista una cartella mwoqwritable con permessi di scrittura preposta a conservare i file di lavoro generati dall'applicativo, per esempio la cache delle pagine, ma che non è accessibile tramite mwogURL.
Codeigniter 4, come la precedente versione, rimane basato sul paradigma MVC (model-view-controller). Mentre le classi controller sono indispensabili al funzionamento del software sviluppato, le classi per definire modelli e view sono opzionali. Resta comunque possibile modificare autonomamente con alcuni accorgimenti il funzionamento del framework per adottare il paradigma HVMC (View-Model-Controller Gerarchico) in modo da gestire a gruppi modulari Controller, Modelli e View in subdirectory fisichecite-ref-17[17]cite-ref-18[18].
La gestione dei database è quasi identica, anche se sono cambiati alcuni dei connettori supportati e la sintassi dell'ORM. Il caricamento di librerie, modelli e altri oggetti è uguale a prima ma è possibile specificare nei file di configurazione, come nei file del codice, i percorsi di localizzazione in formato PSR4. Inoltre sono stati integrati in Codeigniter 4 nuovi strumenti di test e debug, come per esempio KINTcite-ref-19[19].
Note
cite-note-11. ↑ mwtw(mwuamwuqEN) James Parry (Project Lead), mwugmwuwCodeIgniter 3.1.10 Released, su mwvaforum.codeigniter.com. mwvqURL consultato l'11 luglio 2019.
cite-note-22. ↑ mwwqmwwgmwwwBenchmark update: Cake vs. CodeIgniter vs. Kohana, su mwxapr0digy.com, 3 settembre 2008. mwxqURL consultato il 24 luglio 2009 mwxg(archiviato dall'mwxwurl originale il 29 febbraio 2012).
cite-note-33. ↑ mwywmwzamwzqRasmus Lerdorf: PHP Frameworks? Think Again, su mwzgsitepoint.com, 29 agosto 2008. mwzwURL consultato il 3 agosto 2013.
cite-note-44. ↑ mw0wmw1amw1qEllisLab/CodeIgniter · GitHub, su mw1ggithub.com.
cite-note-55. ↑ mw2gmw2wmw3aCodeIgniter User Guide Version 2.1.4mw3q : CodeIgniter License Agreement, su mw3gcodeigniter.com. mw3wURL consultato il 10 luglio 2013.
cite-note-66. ↑ mw4wmw5amw5qYour Favorite PHP Framework has a new home, su mw5gellislab.com. mw5wURL consultato il 26 dicembre 2017 mw6a(archiviato dall'mw6qurl originale il 17 ottobre 2014).
cite-note-77. ↑ mw7q(mw7gmw7wEN) Jim Parry, mw8amw8qCodeIgniter Foundation in place, su mw8gforum.codeigniter.com. mw8wURL consultato il 16 luglio 2019.
cite-note-88. ↑ mw9wmw-amw-qImportant News about Jim Parry and the Project, su mw-gforum.codeigniter.com. mw-wURL consultato il 25 febbraio 2020.
cite-note-99. ↑ mw-wmwaqamwaqe7 Best PHP Frameworks, su mwaqitisindia.com.
cite-note-1010. ↑ mwaqymwaqcmwaqgServer Requirements — CodeIgniter 3.1.10 documentation, su mwaqkcodeigniter.com. mwaqoURL consultato l'11 luglio 2019 mwaqs(archiviato dall'mwaqwurl originale l'11 luglio 2019).
cite-note-1111. ↑ mwara(mwaremwariEN) mwarmmwarqServer Requirements — CodeIgniter4 4.0.0-beta.3 documentation, su mwarucodeigniter4.github.io. mwaryURL consultato il 23 luglio 2019.
cite-note-1212. ↑ mwaromwarsmwarwServer Requirements documentation, su mwar0codeigniter.com. mwar4URL consultato l'11 luglio 2019.
cite-note-1313. ↑ mwasimwasmmwasqCodeIgniter + Smarty, Perfect Together, su mwasucoolphptools.com.
cite-note-1414. ↑ mwask(mwasomwassEN) Mindfire Solutions, mwaswmwas0Pros and Cons of CodeIgniter Framework, su mwas4Blogs @ Mindfire Solutions, 22 marzo 2018. mwas8URL consultato l'11 luglio 2019.
cite-note-1515. ↑ mwatmmwatqmwatu11 Best Frameworks Review, su mwatycoderseye.com. mwatcURL consultato il 26 dicembre 2017 mwatg(archiviato dall'mwatkurl originale il 26 dicembre 2017).
cite-note-1616. ↑ mwat0mwat4mwat8CodeIgniter 4.0 is here!, su mwauaforum.codeigniter.com. mwaueURL consultato il 25 febbraio 2020.
cite-note-1717. ↑ mwauu(mwauymwaucEN) Imre Csige, mwaugmwaukCreating modular HMVC applications with Codeigniter 4, su mwauoImre Csige's Digital Garden. mwausURL consultato il 5 gennaio 2022.
cite-note-1818. ↑ mwau8Mufid Jamaluddin, mwavamwaveCodeigniter4-HMVC, 4 gennaio 2022. mwaviURL consultato il 5 gennaio 2022.
cite-note-1919. ↑ mwavymwavcmwavgkint-php/kint, kint-php, 25 febbraio 2020. mwavkURL consultato il 25 febbraio 2020.
Collegamenti esterni
• Sito ufficiale, su codeigniter.com.
• Sito ufficiale, su codeigniter.es.
• Sito ufficiale, su forum.codeigniter.com.
• Repository sorgenti di CodeIgniter, su github.com.
• mwav8Forum sviluppatori Codeigniter, su forum.codeigniter.com.